Networking has become an integral part of computer systems. Advances in network bandwidths, however, have not been fully utilized due to overhead that may be associated with processing protocol stacks. A protocol stack generally refers to a set of procedures or programs that may be executed to handle packets sent over a network, where the packets may conform to a specified protocol. For example, TCP/IP (Transport Control Protocol/Internet Protocol) packets may be processed using a TCP/IP stack.
Overhead associated with processing protocol stacks may result from bottlenecks in a computer system from using a central processing unit (CPU) to perform slow memory access functions such as data movement. Such overhead may be reduced by partitioning protocol stack processing. For example, TCP/IP stack processing may be offloaded to a TCP/IP offload engine (TOE). Also, the entire TCP/IP stack may be offloaded to a networking component, such as a MAC (media access control) component, of an I/O subsystem, such as a NIC (network interface card). However, valuable CPU cycles may still be spent waiting for the offloaded processing to complete.